]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Add params.js, for function param object parsing.
authorDan Winship <danw@gnome.org>
Tue, 3 Nov 2009 21:05:54 +0000 (16:05 -0500)
committerDan Winship <danw@gnome.org>
Mon, 23 Nov 2009 18:48:59 +0000 (13:48 -0500)
js/misc/Makefile.am
js/misc/params.js [new file with mode: 0644]

index 084a45cada2cdfecd92c09e93b257fd56a377f67..9118b1f5c26ee4ba57476eac8bfcbfe7da796dc2 100644 (file)
@@ -2,4 +2,5 @@ jsmiscdir = $(pkgdatadir)/js/misc
 
 dist_jsmisc_DATA =             \
        docInfo.js              \
-       format.js
+       format.js               \
+       params.js
diff --git a/js/misc/params.js b/js/misc/params.js
new file mode 100644 (file)
index 0000000..77c51b9
--- /dev/null
@@ -0,0 +1,33 @@
+/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+// parse:
+// @params: caller-provided parameter object, or %null
+// @default: function-provided defaults object
+// @allowExtras: whether or not to allow properties not in @default
+//
+// Examines @params and fills in default values from @defaults for
+// any properties in @defaults that don't appear in @params. If
+// @allowExtras is not %true, it will throw an error if @params
+// contains any properties that aren't in @defaults.
+//
+// If @params is %null, this returns @defaults.
+//
+// Return value: the updated params
+function parse(params, defaults, allowExtras) {
+    if (!params)
+        return defaults;
+
+    if (!allowExtras) {
+       for (let prop in params) {
+           if (!(prop in defaults))
+               throw new Error('Unrecognized parameter "' + prop + '"');
+       }
+    }
+
+    for (let prop in defaults) {
+       if (!(prop in params))
+           params[prop] = defaults[prop];
+    }
+
+    return params;
+}
\ No newline at end of file